package com.sys.server.modules.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sys.server.common.constants.enums.ResultSetEnum;
import com.sys.server.common.model.R;
import com.sys.server.modules.controller.dto.OperLogDto;
import com.sys.server.modules.controller.vo.PageVo;
import com.sys.server.modules.entity.OperLogEntity;
import com.sys.server.modules.mapper.OperLogMapper;
import com.sys.server.modules.service.OperLogService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

@Service
public class OperLogServiceImpl implements OperLogService {

    @Resource
    private OperLogMapper logMapper;

    @Override
    public R getOperLog(OperLogDto operLogDto) {
        IPage<OperLogEntity> page = new Page<>(operLogDto.getPageNum(), operLogDto.getPageSize());
        QueryWrapper<OperLogEntity> wrapper = new QueryWrapper<>();
        if (StringUtils.isNotBlank(operLogDto.getUid())) {
            wrapper.eq("uid", operLogDto.getUid());
        }
        if (StringUtils.isNotBlank(operLogDto.getOperation())) {
            wrapper.eq("operation", operLogDto.getOperation());
        }
        // 根据创建时间倒序排序
        wrapper.orderByDesc("time");
        try {
            logMapper.selectPage(page, wrapper);
        } catch (Exception e) {
            return R.ok(ResultSetEnum.FAIL);
        }
        PageVo result = new PageVo();
        result.setTotal(page.getTotal());
        if (page.getRecords() != null) {
            result.setList(page.getRecords());
        }
        result.setSize(operLogDto.getPageSize());
        result.setCurrent(operLogDto.getPageNum());
        return R.ok(ResultSetEnum.SUCCESS, result);
    }
}
